home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 February: Tool Chest / Dev.CD Feb 94.toast / Tool Chest / Development Platforms / MPW Related / MPW Interfaces / CIncludes / Slots.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-09-17  |  11.0 KB  |  307 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        Slots.h
  3.  
  4.     Copyright:    © 1983-1993 by Apple Computer, Inc.
  5.                 All rights reserved.
  6.  
  7.     Version:    System 7.1 for ETO #11
  8.     Created:    Tuesday, March 30, 1993 18:00
  9.  
  10. */
  11.  
  12. #ifndef __SLOTS__
  13. #define __SLOTS__
  14.  
  15. #ifndef __TYPES__
  16. #include <Types.h>
  17. #endif
  18.  
  19. #ifndef __OSEVENTS__
  20. #include <OSEvents.h>
  21. #endif
  22.  
  23. #ifndef __OSUTILS__
  24. #include <OSUtils.h>
  25. #endif
  26.  
  27. #ifndef __FILES__
  28. #include <Files.h>
  29. #endif
  30.  
  31.  
  32. enum {
  33.  
  34.     fCardIsChanged = 1,             /*Card is Changed field in StatusFlags field of sInfoArray*/
  35.     fCkForSame = 0,                 /*For SearchSRT. Flag to check for SAME sResource in the table. */
  36.     fCkForNext = 1,                 /*For SearchSRT. Flag to check for NEXT sResource in the table. */
  37.     fWarmStart = 2,                 /*If this bit is set then warm start else cold start.*/
  38.  
  39.     stateNil = 0,                   /*State*/
  40.     stateSDMInit = 1,               /*:Slot declaration manager Init*/
  41.     statePRAMInit = 2,              /*:sPRAM record init*/
  42.     statePInit = 3,                 /*:Primary init*/
  43.     stateSInit = 4,                 /*:Secondary init*/
  44.  
  45. /* flags for spParamData */
  46.     fall = 0,                       /* bit 0: set=search enabled/disabled sRsrc's */
  47.     foneslot = 1,                   /*       1: set=search sRsrc's in given slot only */
  48.     fnext = 2                       /*       2: set=search for next sRsrc */
  49. };
  50.  
  51. struct SlotIntQElement {
  52.     Ptr sqLink;                     /*ptr to next element*/
  53.     short sqType;                   /*queue type ID for validity*/
  54.     short sqPrio;                   /*priority*/
  55.     ProcPtr sqAddr;                 /*interrupt service routine*/
  56.     long sqParm;                    /*optional A1 parameter*/
  57. };
  58.  
  59. typedef struct SlotIntQElement SlotIntQElement;
  60. typedef SlotIntQElement *SQElemPtr;
  61.  
  62. struct SpBlock {
  63.     long spResult;                  /*FUNCTION Result*/
  64.     Ptr spsPointer;                 /*structure pointer*/
  65.     long spSize;                    /*size of structure*/
  66.     long spOffsetData;              /*offset/data field used by sOffsetData*/
  67.     Ptr spIOFileName;               /*ptr to IOFile name for sDisDrvrName*/
  68.     Ptr spsExecPBlk;                /*pointer to sExec parameter block.*/
  69.     long spParamData;               /*misc parameter data (formerly spStackPtr).*/
  70.     long spMisc;                    /*misc field for SDM.*/
  71.     long spReserved;                /*reserved for future expansion*/
  72.     short spIOReserved;             /*Reserved field of Slot Resource Table*/
  73.     short spRefNum;                 /*RefNum*/
  74.     short spCategory;               /*sType: Category*/
  75.     short spCType;                  /*Type*/
  76.     short spDrvrSW;                 /*DrvrSW*/
  77.     short spDrvrHW;                 /*DrvrHW*/
  78.     char spTBMask;                  /*type bit mask bits 0..3 mask words 0..3*/
  79.     char spSlot;                    /*slot number*/
  80.     char spID;                      /*structure ID*/
  81.     char spExtDev;                  /*ID of the external device*/
  82.     char spHwDev;                   /*Id of the hardware device.*/
  83.     char spByteLanes;               /*bytelanes from card ROM format block*/
  84.     char spFlags;                   /*standard flags*/
  85.     char spKey;                     /*Internal use only*/
  86. };
  87.  
  88. typedef struct SpBlock SpBlock;
  89. typedef SpBlock *SpBlockPtr;
  90.  
  91. struct SInfoRecord {
  92.     Ptr siDirPtr;                   /*Pointer to directory*/
  93.     short siInitStatusA;            /*initialization E*/
  94.     short siInitStatusV;            /*status returned by vendor init code*/
  95.     char siState;                   /*initialization state*/
  96.     char siCPUByteLanes;            /*0=[d0..d7] 1=[d8..d15]*/
  97.     char siTopOfROM;                /*Top of ROM= $FssFFFFx: x is TopOfROM*/
  98.     char siStatusFlags;             /*bit 0 - card is changed*/
  99.     short siTOConst;                /*Time Out C for BusErr*/
  100.     char siReserved[2];             /*reserved*/
  101.     Ptr siROMAddr;                  /* addr of top of ROM */
  102.     char siSlot;                    /* slot number */
  103.     char siPadding[3];              /* reserved */
  104. };
  105.  
  106. typedef struct SInfoRecord SInfoRecord;
  107. typedef SInfoRecord *SInfoRecPtr;
  108.  
  109. struct SDMRecord {
  110.     ProcPtr sdBEVSave;              /*Save old BusErr vector*/
  111.     ProcPtr sdBusErrProc;           /*Go here to determine if it is a BusErr*/
  112.     ProcPtr sdErrorEntry;           /*Go here if BusErrProc finds real BusErr*/
  113.     long sdReserved;                /*Reserved*/
  114. };
  115.  
  116. typedef struct SDMRecord SDMRecord;
  117.  
  118. struct FHeaderRec {
  119.     long fhDirOffset;               /*offset to directory*/
  120.     long fhLength;                  /*length of ROM*/
  121.     long fhCRC;                     /*CRC*/
  122.     char fhROMRev;                  /*revision of ROM*/
  123.     char fhFormat;                  /*format - 2*/
  124.     long fhTstPat;                  /*test pattern*/
  125.     char fhReserved;                /*reserved*/
  126.     char fhByteLanes;               /*ByteLanes*/
  127. };
  128.  
  129. typedef struct FHeaderRec FHeaderRec;
  130. typedef FHeaderRec *FHeaderRecPtr;
  131.  
  132. struct SEBlock {
  133.     unsigned char seSlot;           /*Slot number.*/
  134.     unsigned char sesRsrcId;        /*sResource Id.*/
  135.     short seStatus;                 /*Status of code executed by sExec.*/
  136.     unsigned char seFlags;          /*Flags*/
  137.     unsigned char seFiller0;        /*Filler, must be SignedByte to align on odd boundry*/
  138.     unsigned char seFiller1;        /*Filler*/
  139.     unsigned char seFiller2;        /*Filler*/
  140.     long seResult;                  /*Result of sLoad.*/
  141.     long seIOFileName;              /*Pointer to IOFile name.*/
  142.     unsigned char seDevice;         /*Which device to read from.*/
  143.     unsigned char sePartition;      /*The partition.*/
  144.     unsigned char seOSType;         /*Type of OS.*/
  145.     unsigned char seReserved;       /*Reserved field.*/
  146.     unsigned char seRefNum;         /*RefNum of the driver.*/
  147.     unsigned char seNumDevices;     /* Number of devices to load.*/
  148.     unsigned char seBootState;      /*State of StartBoot code.*/
  149. };
  150.  
  151. typedef struct SEBlock SEBlock;
  152.  
  153.  
  154. #ifdef __cplusplus
  155. extern "C" {
  156. #endif
  157. /*  Principle  */
  158. #pragma parameter __D0 SReadByte(__A0)
  159. pascal OSErr SReadByte(SpBlockPtr spBlkPtr)
  160.     = {0x7000,0xA06E}; 
  161. #pragma parameter __D0 SReadWord(__A0)
  162. pascal OSErr SReadWord(SpBlockPtr spBlkPtr)
  163.     = {0x7001,0xA06E}; 
  164. #pragma parameter __D0 SReadLong(__A0)
  165. pascal OSErr SReadLong(SpBlockPtr spBlkPtr)
  166.     = {0x7002,0xA06E}; 
  167. #pragma parameter __D0 SGetCString(__A0)
  168. pascal OSErr SGetCString(SpBlockPtr spBlkPtr)
  169.     = {0x7003,0xA06E}; 
  170. #pragma parameter __D0 SGetBlock(__A0)
  171. pascal OSErr SGetBlock(SpBlockPtr spBlkPtr)
  172.     = {0x7005,0xA06E}; 
  173. #pragma parameter __D0 SFindStruct(__A0)
  174. pascal OSErr SFindStruct(SpBlockPtr spBlkPtr)
  175.     = {0x7006,0xA06E}; 
  176. #pragma parameter __D0 SReadStruct(__A0)
  177. pascal OSErr SReadStruct(SpBlockPtr spBlkPtr)
  178.     = {0x7007,0xA06E}; 
  179.  
  180. /*  Special  */
  181. #pragma parameter __D0 SReadInfo(__A0)
  182. pascal OSErr SReadInfo(SpBlockPtr spBlkPtr)
  183.     = {0x7010,0xA06E}; 
  184. #pragma parameter __D0 SReadPRAMRec(__A0)
  185. pascal OSErr SReadPRAMRec(SpBlockPtr spBlkPtr)
  186.     = {0x7011,0xA06E}; 
  187. #pragma parameter __D0 SPutPRAMRec(__A0)
  188. pascal OSErr SPutPRAMRec(SpBlockPtr spBlkPtr)
  189.     = {0x7012,0xA06E}; 
  190. #pragma parameter __D0 SReadFHeader(__A0)
  191. pascal OSErr SReadFHeader(SpBlockPtr spBlkPtr)
  192.     = {0x7013,0xA06E}; 
  193. #pragma parameter __D0 SNextSRsrc(__A0)
  194. pascal OSErr SNextSRsrc(SpBlockPtr spBlkPtr)
  195.     = {0x7014,0xA06E}; 
  196. #pragma parameter __D0 SNextTypeSRsrc(__A0)
  197. pascal OSErr SNextTypeSRsrc(SpBlockPtr spBlkPtr)
  198.     = {0x7015,0xA06E}; 
  199. #pragma parameter __D0 SRsrcInfo(__A0)
  200. pascal OSErr SRsrcInfo(SpBlockPtr spBlkPtr)
  201.     = {0x7016,0xA06E}; 
  202. #pragma parameter __D0 SCkCardStat(__A0)
  203. pascal OSErr SCkCardStat(SpBlockPtr spBlkPtr)
  204.     = {0x7018,0xA06E}; 
  205. #pragma parameter __D0 SReadDrvrName(__A0)
  206. pascal OSErr SReadDrvrName(SpBlockPtr spBlkPtr)
  207.     = {0x7019,0xA06E}; 
  208. #pragma parameter __D0 SFindDevBase(__A0)
  209. pascal OSErr SFindDevBase(SpBlockPtr spBlkPtr)
  210.     = {0x701B,0xA06E}; 
  211. #pragma parameter __D0 SFindBigDevBase(__A0)
  212. pascal OSErr SFindBigDevBase(SpBlockPtr spBlkPtr)
  213.     = {0x701C,0xA06E}; 
  214.  
  215. /*  Advanced  */
  216. #pragma parameter __D0 InitSDeclMgr(__A0)
  217. pascal OSErr InitSDeclMgr(SpBlockPtr spBlkPtr)
  218.     = {0x7020,0xA06E}; 
  219. #pragma parameter __D0 SPrimaryInit(__A0)
  220. pascal OSErr SPrimaryInit(SpBlockPtr spBlkPtr)
  221.     = {0x7021,0xA06E}; 
  222. #pragma parameter __D0 SCardChanged(__A0)
  223. pascal OSErr SCardChanged(SpBlockPtr spBlkPtr)
  224.     = {0x7022,0xA06E}; 
  225. #pragma parameter __D0 SExec(__A0)
  226. pascal OSErr SExec(SpBlockPtr spBlkPtr)
  227.     = {0x7023,0xA06E}; 
  228. #pragma parameter __D0 SOffsetData(__A0)
  229. pascal OSErr SOffsetData(SpBlockPtr spBlkPtr)
  230.     = {0x7024,0xA06E}; 
  231. #pragma parameter __D0 SInitPRAMRecs(__A0)
  232. pascal OSErr SInitPRAMRecs(SpBlockPtr spBlkPtr)
  233.     = {0x7025,0xA06E}; 
  234. #pragma parameter __D0 SReadPBSize(__A0)
  235. pascal OSErr SReadPBSize(SpBlockPtr spBlkPtr)
  236.     = {0x7026,0xA06E}; 
  237. #pragma parameter __D0 SCalcStep(__A0)
  238. pascal OSErr SCalcStep(SpBlockPtr spBlkPtr)
  239.     = {0x7028,0xA06E}; 
  240. #pragma parameter __D0 SInitSRsrcTable(__A0)
  241. pascal OSErr SInitSRsrcTable(SpBlockPtr spBlkPtr)
  242.     = {0x7029,0xA06E}; 
  243. #pragma parameter __D0 SSearchSRT(__A0)
  244. pascal OSErr SSearchSRT(SpBlockPtr spBlkPtr)
  245.     = {0x702A,0xA06E}; 
  246. #pragma parameter __D0 SUpdateSRT(__A0)
  247. pascal OSErr SUpdateSRT(SpBlockPtr spBlkPtr)
  248.     = {0x702B,0xA06E}; 
  249. #pragma parameter __D0 SCalcSPointer(__A0)
  250. pascal OSErr SCalcSPointer(SpBlockPtr spBlkPtr)
  251.     = {0x702C,0xA06E}; 
  252. #pragma parameter __D0 SGetDriver(__A0)
  253. pascal OSErr SGetDriver(SpBlockPtr spBlkPtr)
  254.     = {0x702D,0xA06E}; 
  255. #pragma parameter __D0 SPtrToSlot(__A0)
  256. pascal OSErr SPtrToSlot(SpBlockPtr spBlkPtr)
  257.     = {0x702E,0xA06E}; 
  258. #pragma parameter __D0 SFindSInfoRecPtr(__A0)
  259. pascal OSErr SFindSInfoRecPtr(SpBlockPtr spBlkPtr)
  260.     = {0x702F,0xA06E}; 
  261. #pragma parameter __D0 SFindSRsrcPtr(__A0)
  262. pascal OSErr SFindSRsrcPtr(SpBlockPtr spBlkPtr)
  263.     = {0x7030,0xA06E}; 
  264. #pragma parameter __D0 SDeleteSRTRec(__A0)
  265. pascal OSErr SDeleteSRTRec(SpBlockPtr spBlkPtr)
  266.     = {0x7031,0xA06E}; 
  267.  
  268. pascal OSErr OpenSlot(ParmBlkPtr paramBlock,Boolean async); 
  269. #pragma parameter __D0 OpenSlotSync(__A0)
  270. pascal OSErr OpenSlotSync(ParmBlkPtr paramBlock)
  271.     = 0xA200; 
  272. #pragma parameter __D0 OpenSlotAsync(__A0)
  273. pascal OSErr OpenSlotAsync(ParmBlkPtr paramBlock)
  274.     = 0xA600; 
  275.  
  276. /*  Device Manager Slot Support  */
  277. #pragma parameter __D0 SIntInstall(__A0,__D0)
  278. pascal OSErr SIntInstall(SQElemPtr sIntQElemPtr,short theSlot)
  279.     = 0xA075; 
  280. #pragma parameter __D0 SIntRemove(__A0,__D0)
  281. pascal OSErr SIntRemove(SQElemPtr sIntQElemPtr,short theSlot)
  282.     = 0xA076; 
  283.  
  284. #pragma parameter __D0 SVersion(__A0)
  285. pascal OSErr SVersion(SpBlockPtr spBlkPtr)
  286.     = {0x7008,0xA06E}; 
  287. #pragma parameter __D0 SetSRsrcState(__A0)
  288. pascal OSErr SetSRsrcState(SpBlockPtr spBlkPtr)
  289.     = {0x7009,0xA06E}; 
  290. #pragma parameter __D0 InsertSRTRec(__A0)
  291. pascal OSErr InsertSRTRec(SpBlockPtr spBlkPtr)
  292.     = {0x700A,0xA06E}; 
  293. #pragma parameter __D0 SGetSRsrc(__A0)
  294. pascal OSErr SGetSRsrc(SpBlockPtr spBlkPtr)
  295.     = {0x700B,0xA06E}; 
  296. #pragma parameter __D0 SGetTypeSRsrc(__A0)
  297. pascal OSErr SGetTypeSRsrc(SpBlockPtr spBlkPtr)
  298.     = {0x700C,0xA06E}; 
  299. #pragma parameter __D0 SGetSRsrcPtr(__A0)
  300. pascal OSErr SGetSRsrcPtr(SpBlockPtr spBlkPtr)
  301.     = {0x701D,0xA06E}; 
  302. #ifdef __cplusplus
  303. }
  304. #endif
  305.  
  306. #endif
  307.